home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 38 / Amiga Format CD38 (1999-03-15)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-04].iso / -screenplay- / hd_installers / turrican2hd / src / turrican2hd.asm < prev   
Assembly Source File  |  1999-02-08  |  2KB  |  113 lines

  1. ; Turrican 2 HD loader v1.0 by Kyzer/CSG
  2.  
  3.     include    jst.i
  4.  
  5.     HD_PARAMS "Turrican2.d",1085664,1    ; 11264+(158*6800)
  6.     Mac_printf "Turrican 2 HD Loader v1.0 © 1998 Kyzer/CSG"
  7.     bsr    loadhiscores
  8.     JSRABS    LoadDisks
  9.     moveq    #0,d0
  10.     move.l    #CACRF_CopyBack,d1
  11.     JSRABS    Degrade
  12.     GO_SUPERVISOR
  13.     SAVE_OSDATA    $80000
  14.  
  15.     moveq    #0,d0
  16.     move.l    #$800,d1
  17.     move.l    #$400,d2
  18.     move.l    #$60000,a0
  19.     JSRGEN    ReadDiskPart    ; D0=0 D1=LENGTH D2=OFFSET A0=LOADADDR
  20.  
  21.     PATCHUSRJSR $42(a0),intro
  22.     PATCHUSRJMP $c0(a0),main
  23.     PATCHUSRJMP $394(a0),rawloader
  24.  
  25.     JSRGEN    FlushCachesHard    
  26.  
  27.     moveq    #0,d0        ; 'we found no extension mem' lie
  28.     jmp    (a0)
  29.  
  30. ;--------------------------------------
  31.  
  32. rawloader
  33. ; get rawloader    D0=bytelength  D1=track  D2=trackoffset  A0=loadaddr
  34. ; to readdiskpart  D0=0  D1=bytelength  D2=diskfileoffset  A0=loadaddr
  35.     exg.l    d0,d1        ; d1 = bytelength, d0=track
  36.     mulu    #6800,d0    ; offset = (track*6800)-2336 + trackoffset
  37.     add.l    d0,d2
  38.     sub.l    #2336,d2
  39.     moveq    #0,d0
  40.     JSRGEN    ReadDiskPart    ; D0=0 D1=LENGTH D2=OFFSET A0=LOADADDR
  41.     JSRGEN    FlushCachesHard
  42.     rts
  43.  
  44. ; patch the call to run the intro
  45. intro    btst.b    #7,$bfe001    ; don't run intro if fire pressed
  46.     beq.s    .done
  47.     jsr    $3010a        ; run the intro
  48. .again    cmp.w    #208,$30AE2    ; wait for it to end
  49.     bne.s    .again
  50. .done    rts
  51.  
  52. main    ; install patches on mainpart and run it
  53.     PATCHUSRJMP $9e2.w,rawloader
  54.     PATCHUSRJMP $be0.w,loadhi
  55.     PATCHUSRJMP $c5e.w,savehi
  56.     PATCHUSRJMP $6d18.w,keyb
  57.     JSRGEN    FlushCachesHard    
  58.     jmp    $c0.w
  59.  
  60. ;--------------------------------------
  61.  
  62. keyb    move.b    d0,$249.w
  63.     cmp.b    #$59,d0    ; F10 key
  64.     beq.s    .die
  65.     jmp    $6d36.w
  66. .die    JSRGEN    InGameExit
  67.  
  68.  
  69. loadhi    move.l    highbuf(pc),a0
  70.     lea    $25e.w,a1
  71.     tst.l    (a0)
  72.     beq.s    .exit
  73.     moveq    #400/4-1,d0
  74. .copy    move.l    (a0)+,(a1)+
  75.     dbra    d0,.copy
  76. .exit    rts
  77.  
  78.     
  79. savehi    lea    $25e.w,a0
  80.     move.l    highbuf(pc),a1
  81.     moveq    #400/4-1,d0
  82. .cp    move.l    (a0)+,(a1)+
  83.     dbra    d0,.cp
  84.     lea    savehiscores(pc),a0
  85.     JSRGEN    SetExitRoutine
  86.     rts
  87.  
  88. ;--------------------------------------
  89.  
  90. loadhiscores
  91.     move.l    #400,d0
  92.     JSRABS    AllocExtMem    ; easy allocate 400 byte!
  93.     lea    highbuf(pc),a0
  94.     move.l    d0,(a0)
  95.  
  96.     bsr.s    __hiset
  97.     JSRGEN    ReadUserFileHD
  98.     rts
  99.  
  100. savehiscores
  101.     bsr.s    __hiset
  102.     JSRGEN    WriteUserFileHD
  103.     rts
  104.  
  105. __hiset    moveq    #0,d0
  106.     move.l    #400,d1
  107.     lea    hiname(pc),a0
  108.     move.l    highbuf(pc),a1
  109.     rts
  110.  
  111. highbuf    dc.l    0
  112. hiname    dc.b    'turrican2.hisc',0
  113.